package Elementary_algorithm.String;

/*
整数反转
给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ，就返回 0。
假设环境不允许存储 64 位整数（有符号或无符号）。

示例 1：
输入：x = 123
输出：321
示例 2：
输入：x = -123
输出：-321
示例 3：
输入：x = 120
输出：21
示例 4：
输入：x = 0
输出：0

作者：LeetCode
链接：https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/
 */
public class _02整数反转 {

    public static void main(String[] args) {

        System.out.println(Solution.reverse(-123));

    }

    //官解：数学
//    链接：https://leetcode.cn/problems/reverse-integer/solutions/755611/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
    class Solution {
        public static int reverse(int x) {
            int rev = 0;
            while (x != 0) {
                //说明溢出
                if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
                    return 0;
                }
                int digit = x % 10;
                x /= 10;
                rev = rev * 10 + digit;
            }
            return rev;
        }
    }

}
